英文全名:Representational State Transfer
中文全名:表現層狀態轉換
一種軟體架構風格 ( 而非標準 ),結構清晰、易理解與方便使用 ( 與 SOAP 和 XML-RPC相比之下 )。符合這種風格的設計簡稱為 RESTful,像幾個知名網站 Amazon、Yahoo、Facebook、Google 等有符合這種設計風格。
資源是 REST 全名中省略的主詞,雖省略卻是很重要的觀念,它表示網路上的實體,可能是一段文字、一張圖片、一首音樂,然後用戶端透過網址(URL)獲得資源,就像有地址就可以找到你家。
資源的表現方法有很多種,剛剛提到的文字就可以使用 txt、HTML、JSON 來呈現,這就稱作「表現層」。
嚴格來說,有些網址的「.html」副檔名是不需要的,因為解析資源的格式是「表現層」的工作,應該要在 HTTP HEAD 中定義 Accept 中的 Content-Type,使用內容協商才是對表現層的設定。
想當初剛開始學習網站設計,無法理解 HTTP 的無狀態協定是什麼意思,今天要寫 RESTful 設計方式,就剛好看到一篇文章介紹很詳細,比喻很貼切呢,事情是這樣的...
今天打開 Chrome,進入一個網站,就代表我與伺服器的一個互動,在過程中會碰到到資料與狀態的變化。而 HTML 是一個無狀態的協議,意思是把每一個請求都視為獨立的,與之前任何請求沒有關係。還是不懂嗎?來個生活中的例子吧,想要知道一個學生的成績,會有幾個步驟:
上述的執行過程就屬於有狀態的,必須按著給一個步驟才能達到結果,只要沒有登入系統、或沒有到查詢畫面,其中一步沒有成功,後續動作就無法執行。相反的,如果輸入一段網址就可以得到某個學生的成績,這就是無狀態,因為查到學生成績不須依賴其他資源或狀態。
所有請求都具獨立性,如果想要操作伺服器中的資源,就得透過「方法」讓伺服器發生「狀態轉換」(State Transfer)。這些請求的方法由 HTTP 提供(HTTP Request Method中的GET
、POST
、PUT
與DELETE
方法)來進行,以便操作伺服器資源。
地址是你家在哪,網址就是資源在哪。
網址中只能有名詞
,不能有動詞
,名詞是資源,而方法是動詞,動詞就由 HTTP 提供。
來介紹一下有些動詞,分別做了什麼~
參考資料:
維基百科
簡單理解REST設計風格與RESTful API
什麼是RESTful API?
學無止盡,每天都要進步一點點!